package ups.edu.ec.app.entidades;

import javax.persistence.Entity;
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Column;
import javax.persistence.Version;
import java.lang.Override;
import java.util.Date;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import ups.edu.ec.app.entidades.TipoCuenta;
import javax.persistence.ManyToOne;

@Entity
public class Cuenta implements Serializable
{

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "id", updatable = false, nullable = false)
   private Long id = null;
   
   @Column
   private String numCuenta;

   @Column
   private double saldo;

   @Temporal(TemporalType.DATE)
   private Date fechaCreacion;

   @ManyToOne
   private TipoCuenta unTipoCuenta;

   public Long getId()
   {
      return this.id;
   }

   public void setId(final Long id)
   {
      this.id = id;
   }

   

   @Override
   public boolean equals(Object that)
   {
      if (this == that)
      {
         return true;
      }
      if (that == null)
      {
         return false;
      }
      if (getClass() != that.getClass())
      {
         return false;
      }
      if (id != null)
      {
         return id.equals(((Cuenta) that).id);
      }
      return super.equals(that);
   }

   @Override
   public int hashCode()
   {
      if (id != null)
      {
         return id.hashCode();
      }
      return super.hashCode();
   }

   public String getNumCuenta()
   {
      return this.numCuenta;
   }

   public void setNumCuenta(final String numCuenta)
   {
      this.numCuenta = numCuenta;
   }

   public double getSaldo()
   {
      return saldo;
   }

   public void setSaldo(double saldo)
   {
      this.saldo = saldo;
   }

   public Date getFechaCreacion()
   {
      return this.fechaCreacion;
   }

   public void setFechaCreacion(final Date fechaCreacion)
   {
      this.fechaCreacion = fechaCreacion;
   }

   @Override
   public String toString()
   {
      String result = getClass().getSimpleName() + " ";
      if (numCuenta != null && !numCuenta.trim().isEmpty())
         result += "numCuenta: " + numCuenta;
      result += ", saldo: " + saldo;
      return result;
   }

   public TipoCuenta getUnTipoCuenta()
   {
      return this.unTipoCuenta;
   }

   public void setUnTipoCuenta(final TipoCuenta unTipoCuenta)
   {
      this.unTipoCuenta = unTipoCuenta;
   }
}